# 5.1 数据类型和变量 —— 基础数据操作
def practice_datatypes():
    """创建学生信息并打印类型"""
    # 整型 年龄
    # 字符串 名字
    # 浮点型 成绩
    # 布尔型 性别
    
    # 打印所有学生的信息，并且把年龄转换成字符串
    age = 25
    name = 'Qinhong Xie'
    score = 100.00
    gender_male = True
    print("the type of age : %s"%type(age))
    print("the type of name : %s"%type(name))
    print("the type of score : %s"%type(score))
    print("the type of gender_male : %s"%type(gender_male))
    print("student's age : %s"%str(age))
    print("student's name : %s"%name)
    print("student's score : %d"%score)
    print("student's gender_male : %s"%gender_male)
# 5.3 使用list和tuple —— 成绩处理
def practice_sequences():
    """成绩列表与元组操作"""
    scores = [85, 92, 78, 90]          # 可变列表 []
    score_tuple = tuple(scores)        # 转换为不可变元组 ()
    scores[0] = 0
    scores[3] = 0
    print (scores)
    print (score_tuple)
    # 修改列表元素 把第一个、第四个成绩都改成0，然后输出上面的list和tuple

# 5.4 条件判断 —— 成绩评级
def practice_conditionals():
    """根据分数返回等级"""
    #编写get_grade函数，使得85以上是A，85-70是B，70以下是C
    def get_grade(score):
        if score < 70:
            return 'C'
        elif score > 85:
            return 'A'
        else:
            return 'B'
    print(f"89分等级：{get_grade(89)}，72分等级：{get_grade(72)}")

# 5.6 循环 —— 成绩分析
def practice_loops():
    """使用循环计算总分"""
    scores = [85, 92, 78, 90]
    total_for = 0
    total_while = 0
    # While循环示例,使用while获得总分并输出
    i = 0
    while i < len(scores):
        total_while += scores[i]
        i += 1
    print(total_while)
    # For循环示例,使用for获得总分并输出
    for j in range(len(scores)):
        total_for += scores[j]
    print(total_for)   


# 5.7 使用dict和set —— 学生数据
def practice_dictionaries():
    """创建学生信息字典"""
    # 整型 年龄
    # 字符串 名字
    # 浮点型 成绩
    # 布尔型 性别
    student = {'age': 25, 'name': 'Qinhongxie', 'score': 100, 'gender_male' : True}
    
    # 输出学生名字
    print(student['name'])
    # 更改学生名字，再次输出
    student['name'] ='Dale' 
    print(student['name'])
    
if __name__ == "__main__":
    practice_datatypes()
    practice_sequences()
    practice_conditionals()
    practice_loops()
    practice_dictionaries()